import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  // 构建为库
  build: {
    // 构建为库，如果制定了build.lib, build.cssCodeSplit 会默认false
    lib: {
      entry: fileURLToPath(new URL('./package/index.js', import.meta.url)), // 库不使用HTML，需更改
      name: 'VueRsTestEntryAnimate', // 暴露的全局变量
      fileName: 'vue-rs-test-entry-animate' // 输出的文件包名，默认package.json的name选项
    },
    // 自定义底层的Rollup打包配置
    rollupOptions: {
      // 确保外部化处理那些你不想打包进库的依赖
      external: ['vue'],
      output: {
        format: 'es', // 默认es，可选 'amd' 'cjs' 'es' 'iife' 'umd' 'system'
        exports: 'named', // https://rollupjs.org/configuration-options/#output-exports
        //   // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          vue: 'Vue',
        }
      }
    },
    // /** 设置为 false 可以禁用最小化混淆，或是用来指定使用哪种混淆器。
    //  默认为 Esbuild，它比 terser 快 20-40 倍，压缩率只差 1%-2%。
    //  注意，在 lib 模式下使用 'es' 时，build.minify 选项不会缩减空格，因为会移除掉 pure 标注，导致破坏 tree-shaking。
    //  当设置为 'terser' 时必须先安装 Terser。（yarn add terser -D）
    //  */
    // minify: 'terser', // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效
    // terserOptions: { // 在打包代码时移除 console、debugger 和 注释
    //   compress: {
    //     /* (default: false) -- Pass true to discard calls to console.* functions.
    //       If you wish to drop a specific function call such as console.info and/or
    //       retain side effects from function arguments after dropping the function
    //       call then use pure_funcs instead
    //     */
    //     drop_console: true, // 生产环境时移除console
    //     drop_debugger: true
    //   },
    //   format: {
    //     comments: false // 删除注释comments
    //   }
    // }
  }
})
